import axios from 'axios'
import Vue from 'vue'
import { Loading } from 'element-ui';
Vue.use(Loading)
// import { Message, Notification } from 'element-ui' // 这里使用了element-ui的消息提示方法，也可自行定义

axios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest'
axios.defaults.headers.post['Content-Type'] = 'text/plain;charset=UTF-8'
axios.defaults.headers.get['Content-Type'] = 'application/x-www-form-urlencoded'
let service = axios.create({
    // baseURL: 'http://www.mxlgsl.cn',
    baseURL: 'http://www.jiyitechic.com/',
    timeout: 10000
})
 // 请求拦截 可在请求头中加入token等
service.interceptors.request.use(config => {
  // showLoading(config)
  return config
}, error => {
  return Promise.reject(error)
})

// 响应拦截 对响应消息作初步的处理
service.interceptors.response.use(resp => {
  //setTimeout(()=>this.$nuxt.$loading.finish(),300)
  // setTimeout(() => {
  //     hideLoading()
  // }, 200);
  if (resp.data) {
    if (resp.data.code !== '0') {
      // Message({
      //   type: 'error',
      //   message: resp.data.message,
      //   duration: 1000
      // })
    }
    // Loading.close();
    return { code: resp.data.code, data: resp.data.data, msg: resp.data.msg }
  } else {
    return resp
  }
}, error => {
  // setTimeout(() => {
  //   hideLoading()
  // }, 200);
  if (error.response) {
    switch (error.response.states) {
      case 400: {
        if (error.response && error.response.data && error.response.data.message) {
        //   Notification.error({
        //     title: '400错误',
        //     message: error.response.data.message,
        //     duration: 5000,
        //     closable: true
        //   })
        }
        break
      }
    }
  }
})

let loadingRequestCount = 0;
var loadingInstance = null;
// 展示loading
const showLoading = () => {
  if (loadingRequestCount === 0) {
        //  element的服务方式 target 我这边取的是表格 项目是后台系统 每个页面都有表格 类似整个表格loading
        // 和在表格配置v-loading一样的效果，这么做是全局实现了，不用每个页面单独去v-loading
      Loading.service({ target: 'body'});
  }
  loadingRequestCount++
}

// 隐藏loading
const hideLoading = () => {
  if (loadingRequestCount <= 0) return
  loadingRequestCount--
  if (loadingRequestCount === 0) {
      Loading.close();
      loadingInstance = null
  }
}
export default service
